Stop the horizontal jump. Lock the chat as the center stage; turn threads and entities into rails.
The chat surface jumps because three columns are competing for layout weight — and because the chat
breaks out of the page frame that Home and Reports respect. The fix: put the chat back inside
the 72rem page frame, lock the reading column at 760px, and have the rails overlay
the stage when opened so the center never reflows. All features stay; the empty space stays — only the
layout becomes anchored.
01
Why the eye jumps
Each column reflows on its own schedule. The header, the stream, and the composer end up at different
widths, and opening either rail re-stretches the message body. The diagram below shows the difference
between the current "three competing columns" and the "center stage + rails" model we want.
Before Three competing columns
Sidebar weight ≈ stream weight ≈ inspector weight. The center column resizes whenever a rail toggles.
Header, stream, save bar, composer all use different alignment widths.
Opening a rail makes the chat content bigger or smaller — a visible shove.
Right rail competes with the answer; reads like a second document.
After Center stage + rails
Stream stays anchored at 800px. Rails collapse to 64px icon strips and overlay before they ever push the stage.
800px reading lock
Header, save bar, stream, composer share one alignment width.
Rails open as peek first. Center only shrinks when both are fully expanded.
Outer whitespace stays — now reading as deliberate gutters, not waste.
02
The fix, live
Try the rail states. The center stream and the composer never change width — they share a single 800px
lock. Toggle Show grid to see the lock; switch Focus / Balanced / Research
to feel how the rails should default per task.
Saved to Orbital Labs · diligence· 2 sections · 7 claims · 3 follow-ups
HS
You9:42 AM
Show me the 3 risks I should ask Orbital Labs about in the diligence call. Cite a recent source for each.
N
NodeBench9:42 AM
⚙Researched 4 sources · 3 cached · 1 live · 0.8s
Three risks worth pressing
on, in priority order:
1. Concentration in two anchor pilots.
Both anchors renew in Q3, and the public ARR hasn't been re-segmented since the seed deck.1
Ask what the post-anchor ARR floor looks like.
2. Founding-team co-investor overlap.
Lead candidate is also on the board of
— the closest comp.2
Ask about info-share guardrails before term-sheet.
3. p95 latency on the hosted plan.
Listed as the only outstanding eval item, but the latest blog post is from January.3
Ask for a fresh number; flag it as a perf enhancement, not a correctness blocker.
memory-first · 0 paid calls so far this session
prototype · move modes / rails to feel the 800px lock — header, stream, save bar, and composer never reflow
03
Layout spec
Concrete numbers to drop into nodebench.css.
The reading lock is the most important value — once it's stable, the rest follows.
Widths
Page frame (matches Home / Reports)72rem · ≈ 1152px
Center stage (stream + composer)760px lock
Left rail · collapsed64px
Left rail · peek260px
Left rail · expanded320px
Right rail · collapsed64px
Right rail · peek300px
Right rail · expanded360px
Outer gutters24–40px
Motion
Rail open / close200ms · ease-out-expo
Center anchorno width animation
Rail content fade-inopacity + 4px slide
Stage reflow on rail opennever · rails overlay
Reduced motionno-op transitions
Mode presets
Mode
Left
Right
Focus
collapsed
collapsed
Balanced
collapsed
peek
Research
peek
expanded
04
Interaction rules
These are the small behaviors that keep the layout feeling anchored even as the user works.
Wrap the chat surface in nb-shell (72rem) so it visually matches Home and Reports.
Default both rails to collapsed icon strips — the conversation is the hero.
Open rails as overlays over the stage with a soft scrim, dismissable on outside click.
Header, save bar, stream, and composer all align to the same 760px center column — one ruler, no drift.
Allow pin on the right rail so it persists across threads when the user wants it.
Let the chat surface go full-bleed while Home and Reports stay framed — jarring on tab switch.
Default both rails open — the center never gets to feel like the hero.
Let the chat width float between 600px and 1100px depending on rail state.
Treat the right rail as a second document — keep it to top relationships and one CTA.
Use a different alignment width for the header vs the stream vs the composer.
One-sentence brief
We fixed the horizontal jump by putting chat inside the same 72rem page frame as Home and Reports,
locking the reading column at 760px, and letting threads and entity context overlay the stage instead
of pushing it — preserving every feature, keeping the premium whitespace, and making every surface
feel like the same product.